package main

import (
	"net"
	"net/rpc"
)

type HelloService struct {

}

//函数必须这样定义（参数类型）
func (s *HelloService) Hello(request string, reply *string) error{
	//返回值是通过修改replay的值
	*reply = "hello, " + request
	return nil
}

//序列化协议为Gob
func main() {
	// 1.实例化一个server
	listener, _ := net.Listen("tcp", ":1234")
	// 2.注册处理逻辑 handler
	_ = rpc.RegisterName("HelloService", &HelloService{})
	// 3.启动服务
	conn, _ := listener.Accept() //当一个新的链接进来的时候，
	rpc.ServeConn(conn)

	//上面一连串的代码，大部分都是net的包，好像和rpc关系
	//不行.rpc调用中有几个问题需要解决1.call id 2.序列化和反序列化（编码和解码）
	//相比python而言，显得不那么好用

	//可以跨语言调用呢？1.go语言的rpc的序列化协议是什么——Gob 2.能否替换成常见的序列化
}
